9.2.1. Dizi Üzerinde Yığın Uygulama Örneği

Aşağıda verilen programda bir örnek verilmiştir. Yığına atılacak verilerin tamsayı ve tutulduğu dizi değişkeninin global olduğu varsayılmıştır. Bu nedenle koy(), al() ve temizle() fonksiyonlarına yığının tutulduğu dizi bilgisi gönderilmemiştir.

Eğer yığın işaretçisi yi, yığının toplam kapasitesini gösteren N 'den büyük veya eşitse yığın doludur; tersi durumda yi=0 ise yığın boş olarak değerlendirilir. Yukarıdaki fonksiyonlardan koy()'da görüleceği gibi ekleme yi ile işaret edilen göze yapılmakta ve yi'nin değeri bir sonraki gözü gösterecek biçimde arttırılmaktadır.

al() fonksiyonda da önce yığın işaretçisi bir önceki gözü gösterecek biçimde azaltılmakta ve önceki gözün içeriği gönderilmektedir. temizle() fonksiyonu ile amaç yığının gözlerini boşaltıp başlangıç durumuna getirmektir; burada yığındaki eski değerler olduğu gibi bırakılıp yalnızca yığın işaretçisine boş duruma karşılık düşen ilk gözün indisi 0 atanmıştır. Gerekiyorsa bir döngü kurularak yığın gözlerine belirli bir değer ataması yapılabilir.

/* Global bildirimler */
#define N 500
int Yveri[N]={0}, yi=0;

/* Yığına koyma fonksiyonu */
int koy(int veri)
{
    if(yi>=N)
           puts("Yığın Dolu");
           return EKES;
}

else
Yveri[yi]=veri;
yi++;
}

/* Yığından alma fonksiyonu */
int al()
{
if(yi<=0) {
puts("Yığın Boş");
return EKES;
}
else
return Yveri[--yi];
}

/* Yığını temizleme fonksiyonu */
void temizle()
{
yi=0;
}